package com.zbkj.common.enums;

import com.zbkj.common.exception.CommonException;
import com.zbkj.common.model.project.EstimateFun;
import lombok.Getter;

import java.math.BigDecimal;
import java.util.Objects;

/**
 * @Auther:
 * @Date: 2024/10/8 17:56
 * @Description:
 */
public enum ProjectFunItem2Enum {
    //修改类型 选项枚举
    /**
     * 项目类型 1 国标  修改类型选项
     */
    ITEM101(101,"新增",new BigDecimal("1.00"), 1),
    ITEM102(102,"修改",new BigDecimal("0.80"), 1),
    ITEM103(103,"删除",new BigDecimal("0.20"), 1);


    @Getter
    private int item;
    @Getter
    private String name;
    @Getter
    private BigDecimal val;
    @Getter
    private int ptype; //项目类型


    ProjectFunItem2Enum(int item, String name,BigDecimal val, int ptype) {
        this.item = item;
        this.name = name;
        this.val = val;
        this.ptype = ptype;
    }

    public static String getItemName(Integer item) {
        ProjectFunItem2Enum itemEnum =  findItemEnum(null,item);
        return Objects.isNull(itemEnum) ? "" : itemEnum.getName();
    }
    public static ProjectFunItem2Enum findItemEnum(Integer ptype, Integer item) {
        if(Objects.isNull(item)) {
            return null;
        }
        for(ProjectFunItem2Enum itemEnum : ProjectFunItem2Enum.values())  {
            if(Objects.isNull(ptype) && itemEnum.getItem() == item) {
                return itemEnum;
            }
            if(Objects.nonNull(ptype) && itemEnum.getPtype() == ptype && itemEnum.getItem() == item) {
                return itemEnum;
            }
        }
        return null;
    }
    public static void estimateFunSet(Integer ptype, Integer item, EstimateFun estimateFun) {
        //国标存在 军标不存在该属性
        ProjectFunItem2Enum itemEnum = findItemEnum(ptype,item);
        if(itemEnum == null && ProjectTypeEnum.isType1(ptype)) {
            estimateFun.setItme2(ITEM101.getItem());
            estimateFun.setItmeVal2(ITEM101.getVal());
        }else if(Objects.nonNull(itemEnum) && ProjectTypeEnum.isType1(ptype) ) {
            estimateFun.setItme2(itemEnum.getItem());
            estimateFun.setItmeVal2(itemEnum.getVal());
        }
    }

    public static void estimateFunSetAndCheck(Integer ptype, Integer item, EstimateFun estimateFun) {
        if(!ProjectTypeEnum.isType1(ptype)) {
            estimateFun.setItme2(null);
            estimateFun.setItmeVal2(null);
            return;
        }
        ProjectFunItem2Enum itemEnum = findItemEnum(ptype,item);
        if(itemEnum == null) {
            //校验不存在返回错误
            throw new CommonException("修改类型选项错误");
        }
        estimateFun.setItme2(itemEnum.getItem());
        estimateFun.setItmeVal2(itemEnum.getVal());
    }
}
